package it.azienda.moretti.modello;

import it.azienda.framework.modello.*;
import it.azienda.framework.persistenza.DAOConnectionSingleton;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import javax.faces.model.SelectItem;
import org.hibernate.Session;

public class BeanUtente extends BeanBase {

    public BeanUtente() {

    }

    private Long id;
    private String nominativo;
    private String cognome;
    private String nome;
    private String sesso;
    private String codicefiscale;
    private Date dataNascita;

    private String telefono;
    private String cellulare;
    private String email;
    private String password;
    private String verificato = "S";
    private String attivo = "S";
    private boolean consenso = false;
    private String news = "N";

    private Float percRicarico = new Float(0);
    private Date dataregistrazione = new Date();

    private BeanRuolo beanRuolo = new BeanRuolo();
    private BeanComune beanComuneNascita = new BeanComune();
    private BeanComune beanComuneResidenza = new BeanComune();

    private HashMap listaOggetti;
    private HashMap listaStorico;
    private HashMap listaStorico2;
    private boolean autenticato;

    private String confermaPassword;
    private Long idComuneNascita;
    private Long idComuneResidenza;
    private SelectItem[] listaComuni;

    private Long idRuolo;
    private SelectItem[] listaRuolo;

    public void verificaPassword(String passConv, String passwd) {
        if (passConv.equals(passwd)) {
            this.setAutenticato(true);
        } else {
            this.setAutenticato(false);
        }
    }

    public void setAutenticato(boolean autenticato) {
        this.autenticato = autenticato;
    }

    public boolean isAutenticato() {
        return autenticato;
    }

    public HashMap getListaOggetti() {
        return listaOggetti;
    }

    public void setListaOggetti(HashMap listaOggetti) {
        this.listaOggetti = listaOggetti;
    }

    public HashMap getListaStorico() {
        return listaStorico;
    }

    public void setListaStorico(HashMap listaStorico) {
        this.listaStorico = listaStorico;
    }

    public HashMap getListaStorico2() {
        return listaStorico2;
    }

    public void setListaStorico2(HashMap listaStorico2) {
        this.listaStorico2 = listaStorico2;
    }

    public void settaHashMapOggetti(ArrayList lista) {
        this.listaOggetti = new HashMap();
        for (int i = 0; i < lista.size(); i++) {
            this.listaOggetti.put(new Integer(i), lista.get(i));
        }
    }

    public void settaHashMapStorico(ArrayList listaO) {
        this.listaStorico = new HashMap();
        for (int i = 0; i < listaO.size(); i++) {
            this.listaStorico.put(new Integer(i), listaO.get(i));
        }
    }

    public void settaHashMapStorico2(ArrayList lista2) {
        this.listaStorico2 = new HashMap();
        for (int i = 0; i < lista2.size(); i++) {
            this.listaStorico2.put(new Integer(i), lista2.get(i));
        }
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @return the cognome
     */
    public String getCognome() {
        return cognome;
    }

    /**
     * @param cognome the cognome to set
     */
    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the sesso
     */
    public String getSesso() {
        return sesso;
    }

    /**
     * @param sesso the sesso to set
     */
    public void setSesso(String sesso) {
        this.sesso = sesso;
    }

    /**
     * @return the codicefiscale
     */
    public String getCodicefiscale() {
        return codicefiscale;
    }

    /**
     * @param codicefiscale the codicefiscale to set
     */
    public void setCodicefiscale(String codicefiscale) {
        this.codicefiscale = codicefiscale;
    }

    /**
     * @return the dataNascita
     */
    public Date getDataNascita() {
        return dataNascita;
    }

    /**
     * @param dataNascita the dataNascita to set
     */
    public void setDataNascita(Date dataNascita) {
        this.dataNascita = dataNascita;
    }

    /**
     * @return the telefono
     */
    public String getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    /**
     * @return the cellulare
     */
    public String getCellulare() {
        return cellulare;
    }

    /**
     * @param cellulare the cellulare to set
     */
    public void setCellulare(String cellulare) {
        this.cellulare = cellulare;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * @return the verificato
     */
    public String getVerificato() {
        return verificato;
    }

    /**
     * @param verificato the verificato to set
     */
    public void setVerificato(String verificato) {
        this.verificato = verificato;
    }

    /**
     * @return the attivo
     */
    public String getAttivo() {
        return attivo;
    }

    /**
     * @param attivo the attivo to set
     */
    public void setAttivo(String attivo) {
        this.attivo = attivo;
    }

    /**
     * @return the percRicarico
     */
    public Float getPercRicarico() {
        return percRicarico;
    }

    /**
     * @param percRicarico the percRicarico to set
     */
    public void setPercRicarico(Float percRicarico) {
        this.percRicarico = percRicarico;
    }

    /**
     * @return the dataregistrazione
     */
    public Date getDataregistrazione() {
        return dataregistrazione;
    }

    /**
     * @param dataregistrazione the dataregistrazione to set
     */
    public void setDataregistrazione(Date dataregistrazione) {
        this.dataregistrazione = dataregistrazione;
    }

    /**
     * @return the nominativo
     */
    public String getNominativo() {

        if (this.cognome != null) {
            nominativo = cognome + " ";
        }

        if (this.nome != null) {
            nominativo += nome;
        }
        return nominativo;
    }

    /**
     * @param nominativo the nominativo to set
     */
    public void setNominativo(String nominativo) {
        this.nominativo = nominativo;
    }

    /**
     * @return the beanRuolo
     */
    public BeanRuolo getBeanRuolo() {
        return beanRuolo;
    }

    /**
     * @param beanRuolo the beanRuolo to set
     */
    public void setBeanRuolo(BeanRuolo beanRuolo) {
        this.beanRuolo = beanRuolo;
    }

    /**
     * @return the beanComuneNascita
     */
    public BeanComune getBeanComuneNascita() {
        return beanComuneNascita;
    }

    /**
     * @param beanComuneNascita the beanComuneNascita to set
     */
    public void setBeanComuneNascita(BeanComune beanComuneNascita) {
        this.beanComuneNascita = beanComuneNascita;
    }

    /**
     * @return the beanComuneResidenza
     */
    public BeanComune getBeanComuneResidenza() {
        return beanComuneResidenza;
    }

    /**
     * @param beanComuneResidenza the beanComuneResidenza to set
     */
    public void setBeanComuneResidenza(BeanComune beanComuneResidenza) {
        this.beanComuneResidenza = beanComuneResidenza;
    }

    /**
     * @return the confermaPassword
     */
    public String getConfermaPassword() {
        return confermaPassword;
    }

    /**
     * @param confermaPassword the confermaPassword to set
     */
    public void setConfermaPassword(String confermaPassword) {
        this.confermaPassword = confermaPassword;
    }

    /**
     * @return the idComuneNascita
     */
    public Long getIdComuneNascita() {
        return idComuneNascita;
    }

    /**
     * @param idComuneNascita the idComuneNascita to set
     */
    public void setIdComuneNascita(Long idComuneNascita) {
        this.idComuneNascita = idComuneNascita;
    }

    /**
     * @return the idComuneResidenza
     */
    public Long getIdComuneResidenza() {
        return idComuneResidenza;
    }

    /**
     * @param idComuneResidenza the idComuneResidenza to set
     */
    public void setIdComuneResidenza(Long idComuneResidenza) {
        this.idComuneResidenza = idComuneResidenza;
    }

    /**
     * @return the listaComuni
     */
    public SelectItem[] getListaComuni() {
        try {
            String query = "select distinct  id,descrizione"
                    + "  from comuni "
                    + " order by descrizione";
            Session sessione = DAOConnectionSingleton.newSession();
            ArrayList comuni = (ArrayList) sessione.createSQLQuery(query).list();

            listaComuni = new SelectItem[comuni.size() + 1];
            listaComuni[0] = new SelectItem(new Long(0), "");
            for (int i = 0; i < comuni.size(); i++) {
                Object[] obj = (Object[]) comuni.get(i);
                listaComuni[i + 1] = new SelectItem(new Long(obj[0].toString()), obj[1].toString());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaComuni;
    }

    /**
     * @param listaComuni the listaComuni to set
     */
    public void setListaComuni(SelectItem[] listaComuni) {
        this.listaComuni = listaComuni;
    }

    /**
     * @return the consenso
     */
    public boolean isConsenso() {
        return consenso;
    }

    /**
     * @param consenso the consenso to set
     */
    public void setConsenso(boolean consenso) {
        this.consenso = consenso;
    }

    /**
     * @return the news
     */
    public String getNews() {
        return news;
    }

    /**
     * @param news the news to set
     */
    public void setNews(String news) {
        this.news = news;
    }

    /**
     * @return the idRuolo
     */
    public Long getIdRuolo() {
        return idRuolo;
    }

    /**
     * @param idRuolo the idRuolo to set
     */
    public void setIdRuolo(Long idRuolo) {
        this.idRuolo = idRuolo;
    }

    /**
     * @return the listaRuolo
     */
    public SelectItem[] getListaRuolo() {
        try {
            String query = "select distinct  id,descrizione"
                    + "  from ruoli "
                    + " order by descrizione";
            Session sessione = DAOConnectionSingleton.newSession();
            ArrayList comuni = (ArrayList) sessione.createSQLQuery(query).list();

            listaRuolo = new SelectItem[comuni.size() + 1];
            listaRuolo[0] = new SelectItem(new Long(0), "");
            for (int i = 0; i < comuni.size(); i++) {
                Object[] obj = (Object[]) comuni.get(i);
                listaRuolo[i + 1] = new SelectItem(new Long(obj[0].toString()), obj[1].toString());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaRuolo;
    }

    /**
     * @param listaRuolo the listaRuolo to set
     */
    public void setListaRuolo(SelectItem[] listaRuolo) {
        this.listaRuolo = listaRuolo;
    }

}
